From 811e95f41b068f2d32335c0bdfbbbf3ae488ab71 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Mon, 11 Jul 2005 08:20:39 -0700 Subject: [PATCH] Fixes so xen+xenlinux boots on ski --- xen/arch/ia64/hyperprivop.S | 11 +++++++---- xen/arch/ia64/vhpt.c | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/xen/arch/ia64/hyperprivop.S b/xen/arch/ia64/hyperprivop.S index 98a4b439bf..581044b135 100644 --- a/xen/arch/ia64/hyperprivop.S +++ b/xen/arch/ia64/hyperprivop.S @@ -288,9 +288,10 @@ GLOBAL_ENTRY(fast_tick_reflect) cmp.ne p6,p0=r28,r30 (p6) br.cond.spnt.few rp;; movl r20=(PERCPU_ADDR)+IA64_CPUINFO_ITM_NEXT_OFFSET;; - ld8 r21=[r20];; + ld8 r26=[r20];; mov r27=ar.itc;; - cmp.ltu p6,p0=r21,r27 + adds r27=200,r27 // safety margin + cmp.ltu p6,p0=r26,r27 (p6) br.cond.spnt.few rp;; mov r17=cr.ipsr;; // slow path if: ipsr.be==1, ipsr.pp==1 @@ -300,14 +301,16 @@ GLOBAL_ENTRY(fast_tick_reflect) extr.u r21=r17,IA64_PSR_PP_BIT,1 ;; cmp.ne p6,p0=r21,r0 (p6) br.cond.spnt.few rp;; + // definitely have a domain tick + mov cr.eoi=r0;; + mov rp=r29;; + mov cr.itm=r26;; // ensure next tick #ifdef FAST_REFLECT_CNT movl r20=fast_reflect_count+((0x3000>>8)*8);; ld8 r21=[r20];; adds r21=1,r21;; st8 [r20]=r21;; #endif - mov cr.eoi=r0;; - mov rp=r29;; // vcpu_pend_timer(current) movl r18=XSI_PSR_IC;; adds r20=XSI_ITV_OFS-XSI_PSR_IC_OFS,r18 ;; diff --git a/xen/arch/ia64/vhpt.c b/xen/arch/ia64/vhpt.c index 86495a8fe8..0eca1abdf3 100644 --- a/xen/arch/ia64/vhpt.c +++ b/xen/arch/ia64/vhpt.c @@ -90,9 +90,10 @@ void vhpt_map(void) void vhpt_multiple_insert(unsigned long vaddr, unsigned long pte, unsigned long logps) { unsigned long mask = (1L << logps) - 1; + extern long running_on_sim; int i; - if (logps-PAGE_SHIFT > 10) { + if (logps-PAGE_SHIFT > 10 && !running_on_sim) { // if this happens, we may want to revisit this algorithm printf("vhpt_multiple_insert:logps-PAGE_SHIFT>10,spinning..\n"); while(1); -- 2.30.2